#pragma once

#include <iostream>
#include <functional>
#include <string>

typedef std::function<int(int, int)> task_func_t;

class Task
{
public:
    Task() {}; // 默认无参构造

    Task(int x, int y, task_func_t func) // 需要我们自己传递函数和对应变量
        : _x(x), _y(y), _func(func)
    {
    }

    void operator()(const string& name) // 执行函数调用时报一下线程名称
    {
        printf("%s, 任务结果: %d + %d = %d \n",name.c_str(), _x, _y, _func(_x, _y));
    }

    int _x;
    int _y;
    task_func_t _func;
};
